package io.terminus.spzx.common.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author lichunlong lcl253137@alibaba-inc.com
 * @Desc SwaggerUI升级版Knife4j的Config配置类
 * @Date 2024-03-10
 */
@Configuration
public class Knife4jConfig {

    /**
     * 创建用户API接口的分组
     *
     * @return 用户API接口分组
     */
    @Bean
    public GroupedOpenApi userApi() {
        return GroupedOpenApi.builder()
                .group("user-api")
                .pathsToMatch("/api/**")
                .build();
    }

    /**
     * 创建ADMIN API接口的分组
     *
     * @return ADMIN API接口分组
     */
    @Bean
    public GroupedOpenApi adminApi() {
        return GroupedOpenApi.builder()
                .group("admin-api")
                .pathsToMatch("/admin/**")
                .build();
    }

    /**
     * 自定义接口信息
     *
     * @return 接口信息
     */
    @Bean
    public OpenAPI customOpenApi() {
        return new OpenAPI()
                .info(new Info()
                        .title("尚品甑选API接口文档")
                        .version("1.0")
                        .description("尚品甑选API接口文档")
                        .contact(new Contact().name("lichunlong")));
    }

    /**
     * 创建一个web-api接口的分组
     *
     * @return api接口用户分组
     */
    @Bean
    public GroupedOpenApi webApi() {
        return GroupedOpenApi.builder()
                .group("web-api")
                .pathsToMatch("/api/**")
                .build();
    }
}
